﻿Public Class frmAgendaLigne
    Public pNoLigne As Integer
    Public pDateTime As DateTime

    Private szSQL As String
    Private rs As ADODB.Recordset
    Dim old_STATUT As String = ""

    Private Sub frmAgendaLigne_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If pNoLigne = 0 Then
            ClearTextBoxes(Me)
            TE_DATE.Value = pDateTime.Date
            TE_HEURE_DEBUT.Value = pDateTime
            TE_HEURE_FIN.Value = TE_HEURE_DEBUT.Value.AddMinutes(15)
            TE_CONTACT.Text = gUserCode
            BO_ENREGISTRER.Enabled = True
            BO_RECHERCHER.Enabled = True
            CB_STATUT.SelectedIndex = 0
        Else
            ' Lire le rendez-vous sélectionné
            szSQL = "CALL spGet_PROSPECTS_RDV_byNO_LIGNE(" & pNoLigne & ")"
            GetRecordset(ctDSN_AEM, szSQL, rs)
            If rs.RecordCount > 0 Then
                TE_CD_PROSPECT.Text = rs.Fields("cd_prospect").Value
                TE_HEURE_DEBUT.Value = rs.Fields("debut_rdv").Value   ' heure début du rdv
                TE_HEURE_FIN.Value = rs.Fields("fin_rdv").Value   ' heure fin du rdv
                TE_DATE.Value = rs.Fields("debut_rdv").Value
                TE_OBJET.Text = nv(rs.Fields("objet_rdv").Value)
                TE_NOTES.Text = nv(rs.Fields("notes").Value)
                TE_CONTACT.Text = nv(rs.Fields("contact").Value)
                CB_STATUT.SelectedIndex = CB_STATUT.FindString(rs.Fields("statut").Value.ToString)
                TE_RESULTAT.Text = nv(rs.Fields("resultat").Value)
                TE_MODIFIE_LE.Text = setModifiedBy(rs.Fields("cree_le").Value, rs.Fields("modif_le").Value, rs.Fields("cd_uti").Value)
            End If
            rs.Close()
            ' prospect ou tache ?
            If TE_CD_PROSPECT.TextLength = 6 Then
                TE_OBJET.ReadOnly = True
                TE_OBJET.BackColor = Color.LightYellow
            Else
                ' non, autre tache
                TE_OBJET.ReadOnly = False
                TE_OBJET.BackColor = Color.White
            End If
        End If
        ' save old statut
        old_STATUT = CB_STATUT.SelectedItem

    End Sub

    Private Sub BO_RECHERCHER_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BO_RECHERCHER.Click

        ' si Elève provisoire, proposer le dernier code client consulté
        If TE_CD_PROSPECT.TextLength Then
            frmProspectSearch.pCD_CLI = TE_CD_PROSPECT.Text
        Else
            frmProspectSearch.pCD_CLI = 0
        End If
        ' ouvre la fenetre de Recherche ELEVES
        frmProspectSearch.ShowDialog()
        TE_CD_PROSPECT.Text = frmProspectSearch.pCD_CLI
        TE_OBJET.Text = frmProspectSearch.pNom
        TE_OBJET.BackColor = Color.LightYellow
        TE_OBJET.ReadOnly = True

    End Sub

    Private Sub BO_AUTRE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BO_AUTRE.Click
        TE_CD_PROSPECT.Text = 10
        TE_OBJET.Text = ""
        TE_OBJET.BackColor = Color.White
        TE_OBJET.ReadOnly = False
    End Sub

    ' Contrôles de saisie de la fiche PROSPECTS
    Private Function IsSaisie_OK() As Boolean

        IsSaisie_OK = False

        ' Controle des zones obligatoires
        If TE_OBJET.TextLength = 0 Then
            MsgBox("L'objet du rendez-vous est obligatoire", MsgBoxStyle.Critical)
            TE_OBJET.Focus()
            Exit Function
        End If
        If TE_CONTACT.TextLength = 0 Then
            MsgBox("Le contact du rendez-vous est obligatoire", MsgBoxStyle.Critical)
            TE_CONTACT.Focus()
            Exit Function
        End If

        ' Controler la cohérence des heures début et fin
        If DateDiff(DateInterval.Minute, TE_HEURE_FIN.Value, TE_HEURE_DEBUT.Value) >= 15 Then
            MsgBox("Le rendez-vous doit durer au moins 15 minutes.", MsgBoxStyle.Critical)
            TE_HEURE_FIN.Focus()
            Exit Function
        End If

        ' Controler que le prospect n'a pas déjà un RDV programmé
        If pNoLigne = 0 Then
            szSQL = "CALL spGet_PROSPECTS_RDV_byPROSPECT(" & TE_CD_PROSPECT.Text & ",-1)"
        Else
            szSQL = "CALL spGet_PROSPECTS_RDV_byPROSPECT(" & TE_CD_PROSPECT.Text & "," & pNoLigne & ")"
        End If
        GetRecordset(ctDSN_AEM, szSQL, rs)
        If rs.RecordCount > 0 Then
            MsgBox("Ce prospect a déjà un rendez-vous programmé le " & rs.Fields("debut_rdv").Value, MsgBoxStyle.Critical)
            Exit Function
        End If

        IsSaisie_OK = True

    End Function

    Private Sub BO_ENREGISTRER_Click(sender As System.Object, e As System.EventArgs) Handles BO_ENREGISTRER.Click

        If IsSaisie_OK() = False Then
            Exit Sub
        End If
        szSQL = "CALL spUPD_PROSPECTS_RDV(" & pNoLigne & "," & TE_CD_PROSPECT.Text & ",'" & Format(TE_HEURE_DEBUT.Value, "yyyy/MM/dd") & " " & TE_HEURE_DEBUT.Text & "','" & _
                 Format(TE_HEURE_FIN.Value, "yyyy/MM/dd") & " " & TE_HEURE_FIN.Text & "','" & nq(TE_RESULTAT.Text) & "','" & CB_STATUT.SelectedItem & "','" & _
                 TE_OBJET.Text & "','" & nq(TE_NOTES.Text) & "','" & TE_CONTACT.Text & "','" & gRelance & "'," & gUserAgence & ",'" & gUserCode & "')"
        ExecQuery(ctDSN_AEM, szSQL)

        ' statut changé en ABSENT ?
        If CB_STATUT.SelectedItem <> old_STATUT And CB_STATUT.SelectedItem = "ABSENT" Then
            szSQL = "CALL spUpd_PROSPECTS_ARELANCER(" & TE_CD_PROSPECT.Text & ",0)"
            ExecQuery(ctDSN_AEM, szSQL)
        End If
        Me.Close()

    End Sub

    Private Sub BO_SUPPRIMER_Click(sender As System.Object, e As System.EventArgs) Handles BO_SUPPRIMER.Click

        If gUserAcces < 4 Then
            Exit Sub
        End If

        ' journée déjà passée ?
        If DateDiff(DateInterval.Day, Now, TE_DATE.Value) < 0 Then
            MsgBox("Ce rendez-vous est déjà passé. Suppression non autorisée.", MsgBoxStyle.Critical)
            Exit Sub
        End If

        ' suppression
        deleteEnregistrement("PROSPECTS_RDV", TE_OBJET.Text, pNoLigne)
        Me.Close()

    End Sub

End Class